+Thu Aug 23 15:32:09 2007 Tim Janik <timj@imendio.com>
+
+ * gdk/x11/gdkgeometry-x11.c (_gdk_window_process_expose): fix
+ X serial handling to cope with wraparounds and maintain referential
+ integrity when removing list nodes. based on a patch by Hui Wang,
+ fixes #461648.
+
2007-08-27 Stefan Kost <ensonic@users.sf.net>
* gtk/gtkwindow.c: Update menu accelerators, when adding/removing
GdkWindowQueueItem *item = tmp_list->data;
GList *next = tmp_list->next;
- if (serial > item->serial)
+ if (serial - item->serial < 0x7FFFFFFF)
{
queue_delete_link (display_x11->translate_queue, tmp_list);
queue_item_free (item);
while (tmp_list)
{
GdkWindowQueueItem *item = tmp_list->data;
- tmp_list = tmp_list->next;
-
- if (serial < item->serial)
+ if (item->serial - serial < 0x7FFFFFFF)
{
if (item->window == window)
{
}
else
{
- queue_delete_link (display_x11->translate_queue,
- display_x11->translate_queue->head);
+ queue_delete_link (display_x11->translate_queue, tmp_list);
queue_item_free (item);
}
+ tmp_list = tmp_list->next;
}
}